/**
 * @file     :student_info.h
 * @brief    :学生信息类头文件
 * @details  :定义学生信息类及其相关方法
 * @author   :TangMJ
 * @date     :2024-09-17
 */

#ifndef _STUDENT_INFO_H_
#define _STUDENT_INFO_H_

#include <QVector>

class student_info {
public:
    /**
     * @brief 构造函数
     *
     * 初始化学生信息对象。
     *
     * @param name 学生姓名
     * @param score 学生成绩
     * @param error_list 学生错题列表
     */
    student_info(QString name, QString score, QVector<unsigned short> error_list);

    /**
     * @brief 析构函数
     *
     * 释放学生信息对象的资源。
     */
    ~student_info();

    /**
     * @brief 获取学生姓名
     *
     * 返回学生的姓名信息。
     *
     * @return 学生姓名
     */
    QString get_name() const;

    /**
     * @brief 设置学生姓名
     *
     * 更新学生的姓名信息。
     *
     * @param name 新的学生姓名
     */
    void set_name(const QString &name);

    /**
     * @brief 获取学生成绩
     *
     * 返回学生的成绩信息。
     *
     * @return 学生成绩
     */
    QString get_score() const;

    /**
     * @brief 设置学生成绩
     *
     * 更新学生的成绩信息。
     *
     * @param score 新的学生成绩
     */
    void set_score(QString score);

    /**
     * @brief 获取错题列表
     *
     * 返回学生的错题列表信息。
     *
     * @return 学生错题列表
     */
    QVector<unsigned short> get_error_list() const;

    /**
     * @brief 设置错题列表
     *
     * 更新学生的错题列表信息。
     *
     * @param error_list 新的错题列表
     */
    void set_error_list(const QVector<unsigned short> &error_list);

private:
    QString _name;                        ///< 学生姓名
    QString _score;                       ///< 学生成绩
    QVector<unsigned short> _error_list;  ///< 学生错题列表
};

#endif
